
// axios的相关配置
import axios from 'axios'
// 导入auth模块
import auth from '@/utils/auth'
// 导入路由实例
import router from '@/router'
// 导入json-bigint
import JSONbig from 'json-bigint'
// 基准路径
axios.defaults.baseURL='http://ttapi.research.itcast.cn/mp/v1_0'
// 配置请求头
// axios.defaults.headers.Authorization =`Bearer ${auth.getUser().token}`

// 配置  响应数据转换方式
axios.defaults.transformResponse=[(data)=>{
  // data 原始数据格式(json字符串)
  // 必须返回转换后的结果
  try{
    // 正常 转成json
    return JSONbig.parse(data)
  }catch(e){
    // 失败  后台给啥返回啥
   return data
  }
}]

// 请求拦截器
// 添加请求拦截器
axios.interceptors.request.use(config=>{
    // 获取本地token
    const token = auth.getUser().token
    // 如果有token就追加到请求头
    if(token) config.headers.Authorization = `Bearer ${token}`
    return config;
  },err=>Promise.reject(err));
 

  // 添加响应拦截器
axios.interceptors.response.use(res=>res,err=>{
    // token失效拦截
    // err.response 响应报文对象
    // err.response.status 响应状态码
    // 严禁判断：首先存在response,然后去去除status做判断
    if(err.response&& err.response.status ===401){
    // $router就是路由实例, src/router/index.js导出的就是路由实例
    // router也可以调用push函数,导入router模块即可
    router.push('/login')
    }
    return Promise.reject(err);
})
    

// 导出
export default axios

